Source code for src.cmd.account

import getpass

from ..util import capture_input
from ..configuration import config
from util import check_pass, MySQL

__all__ = ['add_user', 'drop_user', 'update_user']

[docs]def add_user(cmd): """ The add_user cmd allows a current user to add an additional user. usage example: >>> cchrrd add_user This command assumes that MySQL logs are currently disabled and/or in a restricted directory: See http://dev.mysql.com/doc/refman/5.1/en/password-logging.html for more details. """ user = capture_input('Please enter your username: ', **{'required':True}) pw1 = '' pw2 = None while pw1 != pw2 and not check_pass(pw1): pw1 = getpass.getpass('Please enter new password: ') pw2 = getpass.getpass('Please re-enter new password: ') if pw1 != pw2: print 'passwords do not match...' try: with closing(MySQL(cmd.user, cmd.pwd)) as mysql: mysql.cur.execute("CREATE USER '%s'@'%s' IDENTIFIED BY '%s'" % (user, config.db_host, pw1)) mysql.conn.commit() except Exception as inst: print 'Unable to Create User: %s' % inst sys.exit(1) print "'%s'@'%s' user account created." % (user, config.db_host)
[docs]def drop_user(cmd): """ The drop_user cmd allows a current user to drop an existing user from the database, including their own user account. All users that have access to system are treated as administrators. Any user have rightst to drop any and all users from the database. Usage Example: >>> cchrrd drop_user """ try: print '\n'*50 opt = capture_input('Please select from the following options:\n1: Update username\n2: Update user Password\n3: exit', int_range=(1,3)) if opt == 1: user = capture_input('Please enter user to drop: ', **{'required':True}) with closing(MySQL(cmd.user, cmd.pwd)) as mysql: mysql.cur.execute("DROP USER '%s'@'%s'" % (user, config.host, user1, config.host)) mysql.conn.commit() print "'%s'@'%s' user account dropped." % (user, config.db_host) except Exception as inst: print 'Unable to Update User: %s' % inst sys.exit(1)
[docs]def update_user(cmd): """ The update_user cmd allows a current user to update user name and password for a user, including their own username and/or password. This command assumes that MySQL logs are currently disabled and/or in a restricted directory: See http://dev.mysql.com/doc/refman/5.1/en/password-logging.html for more details. All users that have access to system are treated as administrators. Any user can update any username or password for all users. Usage Example: >>> cchrrd update_user """ opt = 0 try: while opt != 3: print '\n'*50 opt = capture_input('Please select from the following options:\n1: Update username\n2: Update user Password\n3: exit', int_range=(1,3)) if opt == 1: user = capture_input('Please enter old username: ', **{'required':True}) #verify that user exists user1, user2 = '', None while user1 != user2: user1 = capture_input('Please enter new username: ', **{'required':True}) user2 = capture_input('Please verify new username: ', **{'required':True}) if user1 != user2: print 'usernames do not match...' else: with closing(MySQL(cmd.user, cmd.pwd)) as mysql: mysql.cur.execute("RENAME USER '%s'@'%s' TO '%s'@'%s';" % (user, config.host, user1, config.host)) mysql.conn.commit() print "'%s'@'%s' user account updated." % (user, config.db_host) elif opt == 2: pw1 = '' pw2 = None user = capture_input('Please enter username for password update: ', **{'required':True}) while pw1 != pw2 and not check_pass(pw1): pw1 = getpass.getpass('Please enter new password: ') pw2 = getpass.getpass('Please re-enter new password: ') if pw1 != pw2: print 'passwords do not match...' else: with closing(MySQL(cmd.user, cmd.pwd)) as mysql: mysql.cur.execute("""UPDATE mysql.user SET Password=PASSWORD('%s') WHERE User='%s' AND Host='%s'""" % (pw1, user1, config.host)) mysql.cur.execute("""FLUSH PRIVILEGES""") mysql.conn.commit() except Exception as inst: print 'Unable to Update User: %s' % inst sys.exit(1)